package com.yunhe.merchants.repository;

import com.yunhe.merchants.domain.ProcessStatus;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Author: DongWenYu
 * @Date: 2021/5/7 21:28
 */
@Repository
public interface ProcessStatusRepository {
    /**
     * 新增流程
     * @param processStatus
     * @return int
     * @create 2021/5/13 9:06
     */
    public int insert(ProcessStatus processStatus);

    /**
     * 根据流程id删除流程
     * @param id
     * @return void
     * @create 2021/5/13 9:06
     */
    public void delete(Long id);

    /**
     * 根据流程id更新流程
     * @param processStatus
     * @return int
     * @create 2021/5/13 9:07
     */
    public int update(ProcessStatus processStatus);

    /**
     * 根据流程id查询流程
     * @param id
     * @return com.yunhe.merchants.domain.ProcessStatus
     * @create 2021/5/13 9:07
     */
    public ProcessStatus selectById(Long id);

    /**
     * 根据项目id查询流程集合
     * @param id
     * @return java.util.List<com.yunhe.merchants.domain.ProcessStatus>
     * @create 2021/5/13 9:08
     */
    public List<ProcessStatus> selectByProjectId(Long id);

    /**
     * 根据项目id删除流程
     * @param projectId
     * @return void
     * @create 2021/5/13 9:08
     */
    void deleteByProjectId(Long projectId);

    /**
     * 根据项目id和查看的具体流程查询流程
     * @param projectId
     * @param status
     * @return com.yunhe.merchants.domain.ProcessStatus
     * @create 2021/5/13 9:08
     */
    ProcessStatus selectByProjectIdAndStatus(@Param("projectId") Long projectId, @Param("status") String status);

    /**
     * 根据推荐的厂房查看有哪些流程
     * @param recommendOffice
     * @return java.util.List<com.yunhe.merchants.domain.ProcessStatus>
     * @create 2021/5/13 9:11
     */
    List<ProcessStatus> selectByOffice(Long recommendOffice);

    /**
     * @Description
     * @Param
     * @Return
     * @Date 2021/5/14 15:12
     */
    int getCountByOrgIdAndTime(@Param("orgIds") List<Long> deptIds,
                               @Param("salesmanId") Long salesmanId,
                               @Param("companyStatus") String companyStatus,
                               @Param("startTime") String startTime,
                               @Param("endTime") String endTime);

    ProcessStatus getLastProcessWithOutFail(@Param("id") Long id,@Param("companyStatus") String companyStatus);

}
